using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using hotelservices;

namespace hotelservices.app_code.ds
{
    public class UsuariosDS
    {
        public usuarios getUsuarioById(int id)
        {
            HotelEntities entities = new HotelEntities();
            IQueryable<usuarios> res = (from s in entities.usuarios where s.idusuario == id select s);
            if (res.Count() > 0)
                return res.First();
            else
                return null;
        }

        public List<usuarios> getAllUsuarios()
        {
            HotelEntities entities = new HotelEntities();
            IQueryable<usuarios> res = (from s in entities.usuarios select s);
            if (res.Count() > 0)
                return res.ToList();
            else
                return null;
        }

        public bool save(UsuariosDC user)
        {
            HotelEntities entities = new HotelEntities();
            usuarios aux = new usuarios();
            aux.idusuario = user.Idusuario;
            aux.nombre = user.Nombre;
            aux.apellidos = user.Apellidos;
            aux.pais = user.Pais;
            aux.direccion = user.Direccion;
            aux.ciudad = user.Ciudad;
            aux.estado = user.Estado;
            aux.telefono = user.Telefono;
            aux.email = user.Email;
            entities.usuarios.Add(aux);
            int res = entities.SaveChanges();
            if (res > 0)
                return true;
            else
                return false;
        }

        public bool update(UsuariosDC user)
        {
            HotelEntities entities = new HotelEntities();
            IQueryable<usuarios> res = (from s in entities.usuarios where s.idusuario == user.Idusuario select s);
            if (res.Count() > 0)
            {
                usuarios aux = res.First();
                aux.idusuario = user.Idusuario;
                aux.nombre = user.Nombre;
                aux.apellidos = user.Apellidos;
                aux.pais = user.Pais;
                aux.direccion = user.Direccion;
                aux.ciudad = user.Ciudad;
                aux.estado = user.Estado;
                aux.telefono = user.Telefono;
                aux.email = user.Email;
                int resultado = entities.SaveChanges();
                if (resultado > 0)
                    return true;
                else
                    return false;
            }
            return false;
        }

        public List<usuarios> GetUsuariosW(int startIndex, int maxRows)
        {
            using (HotelEntities entities = new HotelEntities())
            {
                return (from usuarios in entities.usuarios
                        select usuarios)
                            .OrderBy(usuario => usuario.nombre)
                            .Skip(startIndex)
                            .Take(maxRows).ToList();
            }
        }

        public int GetUsuariosCount()
        {
            using (HotelEntities entities = new HotelEntities())
            {
                return entities.usuarios.Count();
            }
        }
    }
}